package com.smart.community.region.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.io.Serializable;

/**
 * 店铺查询DTO
 * 
 * @author Wu.Liang
 * @version 1.0.0
 * @since 2025-09-30
 */
@Data
@Schema(description = "店铺查询DTO")
public class ShopQueryDTO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 页码
     */
    @Min(value = 1, message = "页码不能小于1")
    @Schema(description = "页码", example = "1")
    private Integer pageNum = 1;
    
    /**
     * 每页大小
     */
    @Min(value = 1, message = "每页大小不能小于1")
    @Max(value = 100, message = "每页大小不能超过100")
    @Schema(description = "每页大小", example = "10")
    private Integer pageSize = 10;
    
    /**
     * 社区ID
     */
    @Schema(description = "社区ID", example = "1")
    private Long communityId;
    
    /**
     * 店铺类型：1-餐饮，2-零售，3-服务，4-其他
     */
    @Schema(description = "店铺类型", example = "1", allowableValues = {"1", "2", "3", "4"})
    private Integer shopType;
    
    /**
     * 店铺名称（模糊查询）
     */
    @Schema(description = "店铺名称", example = "张三便利店")
    private String shopName;
    
    /**
     * 店铺编码（模糊查询）
     */
    @Schema(description = "店铺编码", example = "SHOP001")
    private String shopCode;
    
    /**
     * 楼栋ID
     */
    @Schema(description = "楼栋ID", example = "1")
    private Long buildingId;
    
    /**
     * 单元ID
     */
    @Schema(description = "单元ID", example = "1")
    private Long unitId;
    
    /**
     * 房间号（模糊查询）
     */
    @Schema(description = "房间号", example = "101")
    private String roomNumber;
    
    /**
     * 联系人（模糊查询）
     */
    @Schema(description = "联系人", example = "张三")
    private String contactPerson;
    
    /**
     * 联系电话（模糊查询）
     */
    @Schema(description = "联系电话", example = "13800138000")
    private String contactPhone;
    
    /**
     * 状态：0-禁用，1-启用
     */
    @Schema(description = "状态", example = "1", allowableValues = {"0", "1"})
    private Integer status;
    
    /**
     * 创建时间开始
     */
    @Schema(description = "创建时间开始", example = "2025-09-01")
    private String createTimeStart;
    
    /**
     * 创建时间结束
     */
    @Schema(description = "创建时间结束", example = "2025-09-30")
    private String createTimeEnd;
}
